package org.zjx.common.service;

import org.zjx.common.entity.Address;

/**
 * 玩家状态查询服务接口
 * 提供对玩家实时状态和角色属性的查询功能
 */
public interface LoadPlayerStateService {

    /**
     * 获取玩家当前坐标和站立开始时间（JSON格式）
     * @param playerId 玩家ID
     * @return JSON字符串，包含address和standStartTime字段
     */
    Address getAddress(String playerId);

    //获取上传更新地址时间
    Long getStandStartTime(String playerId);

    /**
     * 获取玩家当前血量
     */
    Integer getHp(String playerId);

    /**
     * 获取玩家当前伤势值
     */
    Integer getInjury(String playerId);

    /**
     * 获取玩家当前魔法值
     */
    Integer getMp(String playerId);

    /**
     * 获取玩家最大血量（来自角色基础属性）
     */
    Integer getMaxHp(String playerId);

    /**
     * 获取玩家最大魔法值（来自角色基础属性）
     */
    Integer getMaxMp(String playerId);

    /**
     * 计算玩家当前血量百分比
     * @return 百分比值（0.0-100.0），null表示数据异常
     */
    Double getBloodPercentage(String playerId);

    /**
     * 计算玩家当前魔法百分比
     */
    Double getManaPercentage(String playerId);

    /**
     * 获取玩家使用摄妖香的时间戳（毫秒）
     */
    Long getDemonIncense(String playerId);

    /**
     * 获取玩家等级
     */
    Integer getLevel(String playerId);

    /**
     * 获取玩家当前活力值
     */
    Integer getVitality(String playerId);

    /**
     * 获取玩家最大活力值（来自角色基础属性）
     */
    Integer getMaxVitality(String playerId);

    /**
     * 获取玩家当前体力值
     */
    Integer getPhysical(String playerId);

    /**
     * 获取玩家最大体力值
     */
    Integer getMaxPhysical(String playerId);

    /**
     * 获取玩家人气值
     */
    Integer getPopularity(String playerId);

    /**
     * 获取帮派名称
     */
    String getGangName(String playerId);

    /**
     * 获取帮派编号
     */
    Long getGangNumber(String playerId);

    /**
     * 获取帮派贡献值
     */
    Integer getGangValue(String playerId);

    /**
     * 获取门派贡献值
     */
    Integer getSectValue(String playerId);

    /**
     * 获取潜力值
     */
    Integer getPotential(String playerId);

    /**
     * 获取经验值
     */
    Integer getExperience(String playerId);

    /**
     * 获取愤怒值
     */
    Integer getRage(String playerId);

    /**
     * 获取现金
     */
    Integer getCash(String playerId);

    /**
     * 获取储备金
     */
    Integer getFund(String playerId);

    /**
     * 获取存银
     */
    Integer getDeposit(String playerId);

    /**
     * 获取宠物栏最大数量
     */
    Integer getMaxPetValue(String playerId);
}